package test;

public class BinaryTree {
	
	public static void main(String[] args) {
		int num = 5;
		int col = (int) Math.pow(2, num) - 1;// 列数

		int A = col / 2 + 1;// 第一行为A的数

		int mid=A;
		int left=0;//最左边A的值

		int temp=0;
		int k=0;//上一次的最左边的数

		int m=0;//上一次的temp

		for (int i = 1; i <=num; i++) {
			for (int j = 1; j <=col; j++) {
				//第一行

				if(i==1){
					if(j==A){
						System.out.print("A");
						left=getLeft(A);//最左边A的值

					}else{
						System.out.print("-");
					}
				}
				//n行

				if(i>1){
					//最左边

					if(j==left){
						System.out.print("A");
						temp=left+A;
					}
					//n个A

					if(j==temp){
						System.out.print("A");
						m=temp;
						temp+=A;
					}
					if(j!=k&&j!=m)
					System.out.print("-");
				}
				
			}
			k=left;
			if(i>1)
				left=getLeft(left);//下一个最左边A的值

			A=mid;
			mid=left;
			System.out.println();//换行

		}
	}
	
	//获取左边A的值

	public static int getLeft(int A){
		return A/2;
	}
	
	
}
